﻿using Dlls;
using Persistencia;
using Persistencia.Tabelas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using UI.Views.Consultas;

namespace UI.Lancamentos.Produtos_Estoque
{
    /// <summary>
    /// Interaction logic for frmCotacao.xaml
    /// </summary>
    public partial class frmCotacao : Window
    {
        private Persistencia.Cotacao cotacao;
        private CotacaoDLL cotacaoDll;
        private Persistencia.CotacaoItem cotacaoItems;
        private CotacaoItemsDLL cotacaoItemDll;
        private List<CotacaoItems> listCotacaoItems;
        private Produtos produto;
        private ProdutosDLL produtodDll;
      //  private Pessoa pessoa;
        private PessoasDLL pessoasDll;
              
        public frmCotacao()
        {
            cotacao = new Persistencia.Cotacao();
            cotacaoDll = new CotacaoDLL();
            cotacaoItems = new Persistencia.CotacaoItem();
            cotacaoItemDll = new CotacaoItemsDLL();
            listCotacaoItems = new List<CotacaoItems>();
            pessoasDll = new PessoasDLL();
          //  pessoa = new Pessoa();
            produto = new Produtos();
            produtodDll = new ProdutosDLL();
           // cbxQtdFornecedores.SelectedIndex = 0; 
            //VerificaCombox();
            InitializeComponent();
        }

        private void InsertOrUpdate(object sender, RoutedEventArgs e)
        {
            if (txtDataCotacao.Text!="")
            {
                cotacao.DataCriacao = Convert.ToDateTime(txtDataCotacao.Text);
            }
            else
            {
                MessageBox.Show("Data não pode ser Vazia");
            }
            cotacaoDll.Insert(cotacao);
            //Inserindo Itemns na Cotação
            foreach (CotacaoItems item in listCotacaoItems)
            {
                item.CodCotacao = cotacao.Codigo;
               // cotacaoItemDll.Insert(item);
            }
            GridViewItems.ItemsSource = null;
            MessageBox.Show("Cotação criada");
            
            Classes.LimpaCampos.reset(0, this);
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            //string NomeProduto;
            CotacaoItems cotacaoItem = new CotacaoItems()
            {
                CodProduto =int.Parse(txtCodProduto.Text),
                //NomeProduto = txtNomeProduto.Text,
                CodFornecedor1= int.Parse(txtCodForn1.Text),
                QuantidadeFornecedor1 = int.Parse(txtQtdForn1.Text),
                PrecoFornecedor1 = int.Parse(txtPrecoForn1.Text.Replace(",","").Replace(".","")),
            };
              if (cbxQtdFornecedores.SelectedIndex==1)
                {
                cotacaoItem.CodFornecedor2 = int.Parse(txtCodForn2.Text);
                cotacaoItem.QuantidadeFornecedor2 = int.Parse(txtQtdForn2.Text);
                cotacaoItem.PrecoFornecedor2 = int.Parse(txtPrecoForn2.Text);
                }
              else if (cbxQtdFornecedores.SelectedIndex==2)
              {
                //--------- Fornecedor 3
                cotacaoItem.CodFornecedor3 = int.Parse(txtCodForn3.Text);
                cotacaoItem.QuantidadeFornecedor3 = int.Parse(txtQtdForn3.Text);
                cotacaoItem.PrecoFornecedor3 = int.Parse(txtPrecoForn3.Text); 
              }

            AdicionarItemsCotacao(cotacaoItem);
            GridViewItems.ItemsSource = null;
            GridViewItems.ItemsSource = listCotacaoItems;
            Classes.LimpaCampos.reset(0, this);

        }
        private void AdicionarItemsCotacao(CotacaoItems item)
        {
            listCotacaoItems.Add(item);
        }

        private void ValidaFornecedores(object sender, SelectionChangedEventArgs e)
        {
            VerificaCombox();
        }

        private void VerificaCombox()
        {
            if (cbxQtdFornecedores.SelectedIndex == 0)
            {
                txtCodForn2.Visibility = Visibility.Hidden;
                txtNomeForn2.Visibility = Visibility.Hidden;
                txtQtdForn2.Visibility = Visibility.Hidden;
                txtPrecoForn2.Visibility = Visibility.Hidden;

                txtCodForn3.Visibility = Visibility.Hidden;
                txtNomeForn3.Visibility = Visibility.Hidden;
                txtQtdForn3.Visibility = Visibility.Hidden;
                txtPrecoForn3.Visibility = Visibility.Hidden;
            }
            else if (cbxQtdFornecedores.SelectedIndex == 1)
            {
                txtCodForn1.Visibility = Visibility.Visible;
                txtNomeForn1.Visibility = Visibility.Visible;
                txtQtdForn1.Visibility = Visibility.Visible;
                txtPrecoForn1.Visibility = Visibility.Visible;

                txtCodForn2.Visibility = Visibility.Visible;
                txtNomeForn2.Visibility = Visibility.Visible;
                txtQtdForn2.Visibility = Visibility.Visible;
                txtPrecoForn2.Visibility = Visibility.Visible;
            }
            else if (cbxQtdFornecedores.SelectedIndex == 2)
            {
                txtCodForn1.Visibility = Visibility.Visible;
                txtNomeForn1.Visibility = Visibility.Visible;
                txtQtdForn1.Visibility = Visibility.Visible;
                txtPrecoForn1.Visibility = Visibility.Visible;

                txtCodForn2.Visibility = Visibility.Visible;
                txtNomeForn2.Visibility = Visibility.Visible;
                txtQtdForn2.Visibility = Visibility.Visible;
                txtPrecoForn2.Visibility = Visibility.Visible;

                txtCodForn3.Visibility = Visibility.Visible;
                txtNomeForn3.Visibility = Visibility.Visible;
                txtQtdForn3.Visibility = Visibility.Visible;
                txtPrecoForn3.Visibility = Visibility.Visible;

            }
        }

        private void BuscarProduto(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodProduto.Text=="")
                {
                    global.ReturnProduto = null;
                    frmConsultaPadrao consulta = new frmConsultaPadrao("Produto");
                    consulta.ShowDialog();
                    if (global.ReturnProduto != null)
                    {
                        txtCodProduto.Text = global.ReturnProduto.Codigo.ToString();
                        txtNomeProduto.Text = global.ReturnProduto.Nome.ToString();
                    }
                }
                else if (txtCodProduto.Text!="")
                {
                    Produto produto = produtodDll.getProduto(int.Parse(txtCodProduto.Text));
                    if (produto != null)
                    {
                        txtCodProduto.Text = produto.Codigo.ToString();
                        txtNomeProduto.Text = produto.Nome.ToString();
                    }
                    else
                    {
                        MessageBox.Show("Produto não encontrado");
                    }
                }
            }
        }
        
        private void BuscarForne(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodForn1.Text == "")
                {
                    global.ReturnPessoa = null;
                    new frmConsultaPadrao("Pessoa").ShowDialog();
                    if (global.ReturnPessoa != null)
                    {
                        txtCodForn1.Text = global.ReturnPessoa.Codigo.ToString();
                        txtNomeForn1.Text = global.ReturnPessoa.Nome;
                    }
                }
                else if (txtCodForn1.Text !="")
                {
                   Pessoa pessoa = pessoasDll.getPessoa(int.Parse(txtCodForn1.Text));
                    if (pessoa != null)
                    {
                        txtCodForn1.Text = Convert.ToString(pessoa.Codigo);
                        txtNomeForn1.Text = Convert.ToString(pessoa.Nome);
                    }
                    else
                    {
                        MessageBox.Show("Registro não encontrado, favor verificar");
                    }
                }
            }
        }

        private void BuscaForn2(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodForn2.Text == "")
                {
                    global.ReturnPessoa = null;
                    new frmConsultaPadrao("Pessoa").ShowDialog();
                    if (global.ReturnPessoa != null)
                    {
                        txtCodForn2.Text = global.ReturnPessoa.Codigo.ToString();
                        txtNomeForn2.Text = global.ReturnPessoa.Nome;
                    }
                }
                else if (txtCodForn1.Text != "")
                {
                    Pessoa pessoa = pessoasDll.getPessoa(int.Parse(txtCodForn2.Text));
                    if (pessoa != null)
                    {
                        txtCodForn2.Text = Convert.ToString(pessoa.Codigo);
                        txtNomeForn2.Text = Convert.ToString(pessoa.Nome);
                    }
                    else
                    {
                        MessageBox.Show("Registro não encontrado, favor verificar");
                    }
                }
            }
        }

        private void BuscaForn3(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodForn3.Text == "")
                {
                    global.ReturnPessoa = null;
                    new frmConsultaPadrao("Pessoa").ShowDialog();
                    if (global.ReturnPessoa != null)
                    {
                        txtCodForn3.Text = global.ReturnPessoa.Codigo.ToString();
                        txtNomeForn3.Text = global.ReturnPessoa.Nome;
                    }
                }
                else if (txtCodForn3.Text != "")
                {
                    Pessoa pessoa = pessoasDll.getPessoa(int.Parse(txtCodForn3.Text));
                    if (pessoa != null)
                    {
                        txtCodForn3.Text = Convert.ToString(pessoa.Codigo);
                        txtNomeForn3.Text = Convert.ToString(pessoa.Nome);
                    }
                    else
                    {
                        MessageBox.Show("Registro não encontrado, favor verificar");
                    }
                }
            }
        } 
     
    }
}
